Method and apparatus for allowing users to augment searches

ABSTRACT

Embodiment of the invention relate to a computer-implemented method for providing augmented searches for entities to a user, the method comprising obtaining, at a server computer operated by an entity search system, user data related to a user, and obtaining entity data related to a plurality of entities. Then, the entity search system receives a query for a search for relevant entities from the user. The method then further comprises searching for a set of relevant entities based on the query, entity data, and user data, determining a set of criteria for an initial order of relevance, and determining an order of relevance of the set of relevant entities based on the set of criteria. The set of relevant entities or order of relevance may be augmented by obtaining feedback data from the user, thereby providing an augmented search for relevant entities to the user.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims priority from co-pending U.S. Provisional Patent Application No. 61/510,003 filed Jul. 20, 2011 entitled “Method and Apparatus for Allowing Users to Augment Searches”.

The present disclosure may be related to the following commonly assigned U.S. Provisional Patent Applications: U.S. Provisional Patent Application No. 61/509,999 filed Jul. 20, 2011 entitled “Method and Apparatus for Explaining Recommendations”, U.S. Provisional Patent Application No. 61/509,995 filed Jul. 20, 2011, entitled “Method and Apparatus for Category Based Navigation”, and U.S. Provisional Patent Application No. 61/510,004 filed Jul. 20, 2011 entitled “Method and Apparatus for Quickly Evaluating Entities”.

The respective disclosures of these applications/patents are incorporated herein by reference, as if set forth in full in this document, for all purposes.

FIELD OF THE INVENTION

The present invention relates to recommendation systems in general and in particular to an entity search system that allows users to search for entities and augment searches, via user devices, in order to present informative and intuitive entity evaluations.

BACKGROUND OF THE INVENTION

The Internet has become a useful source of information relating to goods and services, but because so many users and companies are connected to the Internet and providing information of their own, it is difficult to find relevant information among all available information. One area of information is in recommendations. As individuals and groups are now able to connect to the Internet and retrieve information from websites and via apps, and do so perhaps while in transit towards a geographic area of interest, they come to expect the ability to find information about goods and services being offered.

One source of information is in the form of websites hosted by or for providers. As used herein, “website” refers to a collection of one or more web pages displayable by a browser or other web client, the one or more web pages being hosted on a web server (i.e., a computer coupled to the Internet, or other network over which communication occurs) that responds to requests for pages hosted thereon. An example might be a restaurant that generates information about its hours, pictures of its dining room, contact information, history, menus and other offerings, then puts that information into a suitable form (such as HTML pages, dynamically generated pages, etc.), stores those pages in electronic storage accessible by the web server (hosted by the restaurant or perhaps a company that specializes in web presence that provides such services to the restaurant), and then serves those pages as client devices request pages. The information might also be presented in another form, such as data supplied to an app on the client device rather than a generic browser on the client device.

However the restaurant gets the information to interested users, it is still limited to information sourced by that restaurant. A number of websites have been set up to collect information from other customers of a vendor of goods or services and provide reviews and comments and other details to other customers or potential customers. For example, there might be a website that focuses on hotels, another on restaurants, another on home repair, or a general one. However, these websites might just have too much information to be useful to a user searching for relevant recommendations.

Additionally, with the increase of users participating in social media websites, users are also interested in getting information about their friends, and the opinions of their friends. For example, a user may find out that a number of their friends on a social media website highly recommend a restaurant, which may be more persuasive to that user than the recommendations of strangers or high rankings on general rating websites. Thus, social media websites that provide information to a user regarding the user's friends may also be another source that the user refers to in gathering information and searching for relevant recommendations. However, social media websites allow users to provide a wide variety of information that may or may not be related to what a user is searching for (e.g., status updates unrelated to a vendor of goods or services), and it is also difficult to cross-reference the recommendations of friends through social media websites with general websites providing reviews, or websites for particular businesses, in a user's search for relevant recommendations.

Thus, there is a massive amount of data to be processed in order for a user to search for relevant data and find what the user has sought out to seek. Realistically, a user cannot sort through all the information collected through various sources, so a more efficient means of processing the data is needed, such as a data navigation system.

An improved recommendations system is desirable.

BRIEF SUMMARY OF THE INVENTION

Embodiments of the invention relate to improved data searching methods and systems. Existing methods for providing data searches and search results to a target user may not provide options to the target user to modify the search based on customized attributes, which may be selected by the target user, or automatically determined based on the target user's query. Thus, if the target user is unable to properly search and find what they are looking for in search results, provided, it is difficult for the target user to feed back to the search system how to narrow down the search, re-direct the search, organize search results, etc. Therefore embodiments of the invention provide methods and systems in which a target user can more efficiently search through data, such as entity evaluations or personalized recommendations, by being able to augment the searches as they are being conducted.

Thus, allowing the target user to augment searches is advantageous and allows users to modify and organize data such that receiving relevant search results, and searching through the search results is executed in the most optimal and efficient manner for the target user. Additionally, data search systems, and other systems in use of such data search systems (e.g., entity search systems, personalized recommendation systems, data navigation systems, etc.) are improved in this manner by becoming more intelligent about providing more relevant search results by allowing users to augment the searches.

Embodiments of the invention relate to improved search methods and systems. Existing methods for providing searches to a target user may not provide options to the target user to modify the search without initiating a new one. Thus, if the target user is dissatisfied with the an initial set of search results, it is difficult for the target user to feed back to a search system what the target user is really searching for and how to improve search results in real-time without starting over. Therefore embodiments of the invention provide methods and systems in which a target user can improve an existing search by augmenting criteria or queries on which the search is based. In some embodiments, there may be multiple simultaneous target users, or there may be one target user and several associated users for whom searches should also be relevant. Input data from such multiple users can be presented synchronously or asynchronously. Some embodiments may provide methods of operation in which they do not need to know who a user is; for example, there may be a kiosk mode in which members of the public can use the system without identifying themselves.

Thus, providing augmented searches to the target user is advantageous and allows users to understand the logic and processes behind generating search results and augment them for optimal results. Additionally, search systems, and other systems in use of such search systems (e.g., personalized recommendation systems, entity navigation systems, etc.) are improved in this manner by becoming more intelligent about providing search results to its users.

In an embodiment of the invention, a computer-implemented method for providing augmented searches for entities to a primary user is described. The method, performed by an entity search system, comprises obtaining, at a server computer, user data related to a plurality of users relevant to the primary user, storing the user data, wherein the user data associated with the plurality of users is stored in a user database. The entity search system then obtains entity data from a plurality of data sources. The entity data is associated with an entity in a plurality of entities, in which the entity provides goods or services to the target user. The method further comprises storing the entity data, wherein the entity data associated with the plurality of entities is stored in an entity database. Then, the entity search system receives a query for a search for relevant entities from the target user, wherein the query is related to an entity in the plurality of entities. The method then further comprises searching for a set of relevant entities relevant to the primary user from the plurality of entities based on the query, entity data, and user data, determining a set of criteria for an initial order of relevance, wherein the initial order of relevance is an order in which the set of relevant entities are to be displayed to the primary user, and determining the initial order of relevance of the set of relevant entities based on the set of criteria. The entity search system may then display, on a user device, the set of relevant entities in the initial order of relevance to the primary user, and obtain, via the user device, feedback data from the user related to the search for the set of relevant entities. Further, the entity search system may augment the search for the set of relevant entities, thereby updating the set of relevant entities, based on the feedback data; and display the updated set of relevant entities to the primary user, thereby providing an augmented search for relevant entities to the primary user.

In another embodiment of the invention, the method further comprises obtaining, via the user device, feedback data from the user related to the initial order of relevance for the set of relevant entities, and augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities based on the feedback data. The entity search system then displays the set of relevant entities to the primary user based on the adjusted order of relevance.

In another embodiment of the invention, the entity search system may assign a corresponding weight of each criteria in the set of criteria, and determine the initial order of relevance of the set of relevant entities based on the weight of each criteria in the set of criteria. The method further comprises obtaining, via the user device, feedback data from the user related to the corresponding weight of each criteria in the set of criteria, and augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities, based on the feedback data related to the corresponding weight of each criteria in the set of criteria. Lastly, the entity search system displays the set of relevant entities to the primary user based on the adjusted order of relevance.

BRIEF DESCRIPTION OF THE DRAWINGS

A further understanding of the nature and advantages of the present invention may be realized by reference to the following drawings. In the appended figures, similar components or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.

FIG. 1 is a block diagram of a navigation system according to aspects of the present invention.

FIG. 2 is a block diagram of a modularized navigation system according to aspects of the present invention.

FIG. 3 illustrates an exemplary user display according to an embodiment of the invention.

FIG. 4 illustrates an exemplary user display according to an embodiment of the invention.

FIG. 5 illustrates an exemplary user display according to an embodiment of the invention.

FIG. 6 illustrates an exemplary user display according to an embodiment of the invention.

FIG. 7 illustrates an exemplary user display according to an embodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

In various embodiments of the invention, improved methods and systems of searching for entities are described. In an embodiment of the invention, an information retrieval or search system takes an explicit or implicit query, finds entities matching the query, orders or ranks the entities, and then displays a subset of the ranked entities.

An improved entity search system is described herein. In order to provide a context for describing embodiments of the present invention, embodiments of the invention will be described herein with reference to a user device receiving personalized recommendations which the user may navigate through. Those skilled in the art will recognize, however, that the present invention is not limited to such embodiments.

It should be understood that, given the complexity of the operations performed, the invention is implemented using computing elements and may also include communication elements that convey data between disparate locations.

System Overview

In FIG. 1, an exemplary entity search system according to an embodiment of the invention is shown. The entity search system 160 may be coupled to a plurality of users, such as a primary user 100, secondary user 102, or any number of users 104. There may be relationships between specific users, for example, the primary user 100 and secondary user 102 may be friends, family members, or co-workers. The plurality of users may be coupled to the personalized recommendations system 160 through associated user devices 110, 112, and 114. User devices may include mobile phones (e.g., a Blackberry™ phone, an iPhone™ device, an Android™ device), tablets (e.g., an iPad™ tablet), or other electronic devices.

The entity search system 160 may obtain inputs from any number of users 100, 102, and 104, registered with the personalized recommendations system 160. The users 100, 102, and 104 may be interconnected and have relationships with one another. The inputs may be transmitted through the user devices 110, 112, 114 via an application. The user devices 110, 112, 114 may be connected to the entity search system 160 through the internet, a wireless network, a telecommunications network, or any suitable communications network. For example, the primary user 100 may use the primary user device 110 to download and install an application issued by the entity search system 160. Through the application, the primary user 100 may edit personal ratings for entities, such as venues and restaurants, and other personal preferences, such as cuisine, type of food, price range, location, distance from current location, etc. The primary user 100 may also provide feedback items or data through the application to respond to recommendations, to add or remove entities, and/or rate an experience at an entity. In other embodiments of the invention, entities may include merchants and service providers.

Additional inputs to the entity search system 160 may come from external data sources, for example, a social network computer system such as the Facebook™ computer system 140(A), a public messaging system such as the Twitter™ messaging system 140(B), and/or any number of other data sources 140(N) via the user accounts 150(A), 150(B), 152(A), 152(B) with the data sources and/or user devices 110, 112. The external data sources may also provide raw location data of the users, for example, through a “check-in” through system 140(A), system 140(B), or other social networking provider system capable of providing raw location data. The other data sources 140(N) may themselves have associated user accounts, which may map directly or indirectly to user accounts of other systems.

Entity Searching

Embodiments of the invention relate to search systems of informational data, for example, information data related to an entity or a set of entities. However, embodiments of the invention are not limited to searching for informational data related to entities, but may be applied to general searching of any type of informational data.

An entity search system according to an embodiment of the invention, as described above, may gather data from a plurality of data sources related to a plurality of entities. Data associated with the plurality of entities (e.g., restaurants) may include, for example, location data, type of cuisine, and price. Other data associated with an entity may be evaluation data, such as a rating based on an average rating of a plurality of users, or reviews from users regarding their experience at or with the entity. All data associated with the plurality of entities may be stored in an entity database operated by the entity search system, and is updated with information gathered from the plurality of external data sources, and plurality of users, as indicated in FIG. 1.

It would be cumbersome, if not impossible, for a target user to individually search through the entity database to find a particular entity. Thus, the target user may enter queries to the entity search system, acting as criteria or conditions for entities that the entity search system may provide evaluation data or other data related to the entities that match the criteria to the target user.

Queries for a set of entities can come in many different forms. It can be a search for an explicit entity (e.g., Restaurant A in Berkeley), or a group of entities (e.g., diners). The queries may be interpreted as a set of implicit filters, and may be pre-encoded, or involve dynamic work in real-time at the time of the query. For example, a query for “Thai restaurants” may be pre-encoded to not include shoe stores, or restaurants categorized as “Italian”. An example of a dynamic filter implemented in real-time may be a query for “Thai restaurants within 0.3 miles of my current location”, which would involve determining the target user's current location, and filtering out Thai restaurants that are within 0.3 miles of the current location, such that neither a Thai restaurant 1 mile away or an Italian restaurant 0.1 mile away both would not be included in the search results. Another example of such filter might be a query for restaurants that lie in a particular direction, such as the direction a user is traveling or currently gazing.

What entities may be searched for depend on the embodiment of the invention and may be anything that can be represented or referred to in a computer system. In some embodiments, entities are providers of goods and services, such as restaurants or nightclubs. In other embodiments, entities are particular goods or services or events, such as a particular dish at a restaurant or a one-time or repeating event such as a concert. In others entities are documents or sections of documents, such as text pages or musical compositions, to be presented to a user. In other embodiments, an entity may be a relationship or potential relationship between two people. For example, a dating recommendation system may recommend in favor of or against a potential relationship between one user and another, or may allow searches for potential relationships meeting some criteria. In another example, entities may be individuals.

Search queries may involve different input modalities either alone or in combination. For example, a simple box into which users may type textual queries, a sketch pad in which users draw something they want to find, opening an application on a mobile user device which uses GPS or other location sensing technology to find items related to their location, and/or structural interfaces which let users select a subset of various attributes of entities, which may be based on evaluation data associated with the entities. A search query could involve a user looking in a particular direction or using an audio or haptic interface.

A user, users, sets of users, or any combination of users may use one or more personalized recommendation, evaluation, or navigation systems that evaluate entities known to a search system. “Recommendations” according to embodiments of the invention may be along a single or multiple dimensions, and/or over a discrete or continuous domain. Recommendations may be presented in a numerical, textual, pictorial, auditory, or tactile fashion.

Recommendations may be include any of these characteristics, either alone or in combination. For example, a user may rate a restaurant on a scale of 1, 2, 3, 4, or 5 stars, with 1 star being the lowest rating, and 5 stars being the highest rating. In another realization, a user may instead rate a restaurant on a 1-5 star scale for taste rating, 1-4 “$” scale for price rating, and add an optional one word description.

In some implementations, recommendations might be called “evaluations” or used in a similar manner. For example, an evaluation might be done by a team of doctors choosing a picture that best represents the mood or situation of a clinical patient, in effect, “recommending” which is the “best” image to use.

Another example of an evaluation or recommendation may include citizen journalists recording a five second video to make a review or recommendation, or an audio summary of a protest or event. In another example, recommendations may use three dimensional sensing technologies to have dancers record their expressions in response to listening to a composition. Another example may include a user operating an application on a mobile device, and dragging pictorial representations of dishes into different groups or piles categorized as “tasty”, “yucky”, and “only sometimes”. In another example, a recommendation may be inferred from aspects of a user's behavior such as whether the user looks in one direction or another, or whether the user walks or turns in one way or another.

Evaluations or recommendations of entities may include “evaluation data”, that may be, according to embodiments of the invention, inputs into a recommendation service provided by a personalized recommendation system described herein. For example, evaluation data may include ratings on a discrete star scale for the quality of a restaurant for a restaurant discovery website/product or answers to personality questions for a match making website/service. Evaluation data may be associated with one entity or a set of entities. For example, a user may rate Jane's Sushi 90/100 and may rate sushi restaurants in general 82/100.

Evaluation data and other data in evaluations may be used, according to embodiments of the invention, in an improved search involving filtering by evaluations. For the purpose of applying the filter, entities may be shown or hidden based on which users, sets of users, or arbitrary combinations of users thereof, who have or have not evaluated each entity. For example, a geographic entity search system may offer the option to not show the user entities which have already been evaluated. As another example, a jewelry search system may offer a group of users performing a query the ability to only show results for jewelry stores in which the group of users' parents have rated more than 80 on a 1-100 scale.

An evaluation filter may be used alone or in arbitrary combination with other filters. They may be broadening (OR) or narrowing (AND). For example, an English language query using Boolean syntax may be, “wines I have previously rated excellent OR (wines costing between $30-$50 AND which my wife has rated at least good) OR the wine of the day”. Other combinations than Boolean ones are possible, however. For instance, one might combine two filters with a weighting to indicate that one was more important. One might also specify in a query that one attribute of an entity be similar to (“like”) a specific datum or an attribute of another entity.

A generalization of filtering considered is an order of relevance for re-ranking search results. For example, with the example provided earlier about filtering all results a user had already passed evaluated, similarly, a list of search results could down-weight results based on filtering criteria. This filtering criteria could either be explicit, or generated implicitly from other context such as GPS or prior search history. As another clarifying example, restaurants rated 5 stars may appear before other restaurants not rated by the person or persons performing a search query if a “prefer my highest rated” filter is active. The ability for a user to meet the system half way by requesting changes to the ranking is referred to as user-specified re-ranking.

The implementation of an evaluation filter may happen at one or more parts of a search system either alone or in combination. For example, it could be implemented in real-time at the time of a query or search. If the system has control over other parts of the result pages that are served, information from the result pages could be dynamically changed. For example, if a target user looks for Japanese food, but the result is for a restaurant that serves only Yakitori (grilled chicken or meat skewers), that information (the fact that it only serves Yakitori) may be obscured, and the target user may only be informed that the restaurant serves Japanese food. However, if a target user explicitly searches for restaurants serving Yakitori, the same restaurant may appear in the search results, but the target user might see the specific information that the restaurant serves only Yakitori, rather than the restaurant serves Japanese food.

Some search systems involve searching by, or for location, and return search results which have locations in the real world.

When entity search systems according to embodiments of the invention are performing ranking of certain criteria over others, all criteria may be fused together to generate an initial order of relevance in ordering the results of a search query. A mechanism of weighting certain criteria over others may be provided to determine the initial order of relevance. This criteria is most frequently determined a priori, for instance, using hand-tuning However, there are many ways to allow user specified filtering or re-ranking order of relevance, such as using machine learning or statistical techniques such as collaborative filtering or regression.

One such example of user-specified re-ranking an order of relevance may be exposing parameters that the system is using. There could be many motivations for this including providing clarity, or providing mechanisms for a user to tune/refine the automatically assumed parameters of the system. These parameters could be performed a priori, or at query time, or a hybrid using both approaches. For example, when a user is searching near a specific location, an entity search system may automatically determine a maximum radius for the search. This distance could be surfaced to the user, which in turn the user could use to provide feedback about if the estimated range was ideal or not, and if not, to change that specific parameter or criteria. This also means that when designing search ranking algorithms to model behavior, the entity search system may determine an order of relevance in intuitive ways that can be explained to the user. For example, use of a penalty function in a distance parameter could lead to a gradual tradeoff of distance and other factors, so that the most relevant restaurants in the periphery appeared and both the most relevant and less relevant restaurants in the center appeared. This approach offers certain advantages but, in some cases, may be difficult for users to work with as intuitively as a maximum radius. An algorithm designer might therefore choose a maximum radius model in this case to make it easier for a user to understand the meaning of a search query they were entering.

Although a user may specify distance as a criteria, for example, preferring entities located in closer proximity of 0.5 miles over entities located over 0.5 miles away, the user may still hold a higher weight (e.g., higher priority) to another criteria, such as a rating of the entity. Thus, the user could specify “more heavily care about distance” vs. “less heavily care about distance. So because the user weighs the rating more heavily than the distance, the user may select a 5-star rated entity over 0.5 miles away over a 3-star rated entity within 0.5 miles. Therefore, the entity search system may display the 5-star entity higher (e.g., higher order of relevance) than the 3-star entity, even though the 5-star entity is over 0.5 miles away and the 3-star entity is within 0.5 miles. However, in comparing two 3-star entities that are both within 0.5 miles, they may be ranked in an order based on distance (e.g., entity 0.2 miles away is displayed higher than an entity 0.4 miles away).

The criteria for searching is not limited to geographic, but rather any sort of parameters that could be modified. For geographical, it is also not limited to city, it could be neighborhood, country, zip code, real estate plots, crime gradients, etc.

One example of a specific type of dynamic filter is a mechanism for automatically changing the range of a search based on the search when doing a search for physical places. This may take in additional context, including hints such as signals from search rankers, GPS data, affinity graph information, or many other different types of subsystems. This would automatically determine the range necessary, balancing the two conflicting requirements of finding many high quality results, and not having the users travel far. This could be variable depending on not just the query, but also the specific information we have learned about a user, such as an observation about the user's decisions about this tradeoff.

Similar to a filter or a re-ranking, is the concept of search relaxation. Search relaxation occurs when a target user makes a query for a search, but the search is unsuccessful in finding entities matching the target user's query, so the query automatically becomes generalized, or altered in a pre-determined way. There are many different forms of search relaxation, such as: 1) ignoring explicit user criteria that have been specified about the price, radius of a search, etc., 2) exposing spelling correction logic 3) automatically generalizing a query, for example, if a user looks for Yakitori, and there are not many results, the entity search system begins searching for Japanese, which is broader or more generalized than Yakitori.

When and how search relaxation occurs may be based on explicit search relaxation criteria determined by a product designer, or may be based on implicit search relaxation criteria derived from information learned through statistical inference. For example, a search relaxation may occur if there are few results, or if there are no results. A search relaxation could also occur if the system determined that a word in a query was extremely rare, and furthermore was similar by edit distance or another distance metric to a non-rare word, in a spelling correction system. Search relaxation criteria may be broader than this, however. Relaxation criteria, and the way in which queries are relaxed, may change over time and may be inferred from user feedback or other information. For example, a system may notice that queries of one kind are commonly followed quickly by queries of another kind, and conclude that information responsive to the second query should be provided immediately without actually requiring the second query.

User feedback may be an explicit response from the user interacting with the user device. The user may interact with the user device via a mobile application associated with the entity search system. Interacting with the application on the user device allows the entity search system and a user to communicate with each other, such as sending queries to the entity search system, providing criteria, editing criteria, providing and editing entity search query results, etc. User feedback may also include editing the query and re-running a search based on the new query. Some search systems may allow a user to save queries for later use. In these systems the fact a query was saved may be user feedback about a query's utility.

FIG. 2 shows a block diagram of an exemplary modular entity search system 160 according to an embodiment of the invention, where the entity search system 160 is configured to provide explanations of the personalized recommendations. In other embodiments of the invention, an explanations provider may be separate from the recommendations provider, and may be operated by different systems. In the example shown in FIG. 2, the entity search system 160 operates as the recommendations provider and explanation (i.e., recommendations explanation) provider.

The entity search system 160 may be a server computer 700, which may be a single computer, a cluster of computers, a server, or a super computer. Processes and methods implemented by or at the server computer could also be implemented by or at a client, in various embodiments. The server computer 700 may comprise a processor 740, and a non-transitory computer readable medium 750, on which code is stored. There may be several databases to store data, for example, an entity database 730(a), a factor database 730(b), a user database 730(c), and a media object database 730(d). Stored in the entity database 730(a) may be evaluation data relating to entities, including entity meta-data (e.g., location, hours of operation, specialty, rating). Entity meta-data may include any sub-category of data related to the entity. The criteria database 730(b) may store previously determined and selected factors from a plurality of users. The user database 730(c) may store user data obtained from a plurality of users, such as real-time data from social networking sites (e.g., tweets, status updates), and stored data related to a plurality of users, such as user preferences and settings (e.g., gender, dietary restrictions). The real-time data may be explicit or implicit, and may include text, images, video, audio, or other media. The user data may be directly obtained from the user or may be obtained from external data sources, such as a social networking site associated with the user. The entity search system 160 may also include a media object database 730(d), storing media objects, such as high resolution photos. The media objects may be associated with entities, recommendations, and/or the target user, and may be used in the display of recommendations and/or recommendation explanations.

The user database and entity database could be NoSQL databases, an SQL database, another information retrieval system such as a computer filesystem, or an in-memory data store. In other embodiments, the system could have a temporary piece of data obtained from a third-party on demand, such that data does not need to be statically or locally stored. A database could consist of multiple storage facilities, such as a cache backed by a database or a normalized authoritative database and denormalized in-memory stores.

The code stored on the non-transitory computer readable medium 750 may be in modules, and is executable by the processor 740 to perform functions, which are implemented as processing steps described above by the entity search system providing recommendation explanations. The non-transitory computer-readable medium 750 may comprise software modules, such as a criteria weighting module 701, a filter module 702, a filter weighting module 703, an order of relevance module 704, a search display module 705, and a query analysis module 706. The functions of these modules are described in the process flows described above.

The entity search system 160, to communicate with external data sources, social networking sites, and users, may include a network interface 720. The network interface 720 includes hardware and software that enables the entity search system 160 to transmit and receive data over the Internet or any other communications network (e.g., telecommunications network, cable, radio).

Exemplary User Display and Interfaces

Filtering options may be dynamic based on information from the search using a query, and vice versa (the search options can be dynamic based on information from the filters). For example, if a user has entered information into a location search box (coupled with a query search box), and some criteria is used to determine that the user is specifying a location other than the current one, then using a radius-based distance criteria may not make sense. For example, if a user enters a city, it might be more prudent to search all locations in a city, rather than scoping by a radius around a specific location. Thus, if it is determined that such a filter is not prudent, it may be dynamically changed, or stripped from the user interface, to reinforce a user's understanding about said functionality. In some cases a filtering option may be automatically enabled, and this information may be communicated to the user or not, based on the context of the search, such as whether the user is searching by location and radius or all locations in a city, or whether the user is searching from a mobile device rather than a desktop computer. User displays of results are not limited to display screens but can include generally visual displays such as heads-up displays, audio results, and haptic feedback.

As shown in examples in FIGS. 3 and 4, the filters have been changed, because the term “Berkeley” has been specified in the top right location box. In FIG. 3, an exemplary user display 300 is illustrated for a user to customize filter parameters as criteria for a search, or for an order of relevance. The user may enter a search query in an input box 304, for example, “pizza” or “cheap eats”. In input box 306, the user may enter a location, select an option to choose “near me” or “current location,” which may enable the user device to determine the current location. The user device may use GPS (Global Positioning System), or other systems to determine the current location of the user device. Section 308 of the user display 300 may indicate a searching criteria “Search”, which could be by “Personal” 308(a) (e.g., personal preferences), or by “Distance” 308(b). A user may also indicate a “Range” 310, and may include a “Smart” option 310(a), in which the entity search system may determine the best range. Otherwise, the user may select a desired range in the options shown in 310(b) (e.g., 0.3 mi, 1 mi, 5 mi, and 15 mi). The user display 300 may also allow the user to set “Price” criteria 312, with options shown as 312(a) using “$”, with “$” indicating inexpensive, while “$$$$$” indicates expensive. The user may also select criteria to “Hide” 314, for example, to hide entities that the user has already evaluated 314(a) (e.g., “Placed I've Rated”), or chain restaurants 314(b) (e.g., “Big Chains”). When the user has completed selecting and augmenting the criteria, the user may select “Done” 302, to save the criteria.

In FIG. 4, an exemplary user display 400 is illustrated for a user to customize filter parameters as criteria for a search, or for an order of relevance. The user may enter a search query in an input box 404, for example, “pizza” or “cheap eats”. In input box 406, the user may enter a location, for example, “Berkeley” the prompting a different set of criteria options than shown in FIG. 3. Section 408 of the user display 400 may indicate a searching criteria “Search”, which could be by “Personal” 408(a) (e.g., personal preferences), or by “Distance” 408(b). However, since the user has inputted into the location box 406 “Berkeley,” the “Range” section 410, now displays a “Use Current Location” option 410(a), in which the entity search system may determine, using GPS or other systems, to determine the user's specific location within the explicit location in 406, Berkeley. The user display 400 may also allow the user to set “Price” criteria 412, with options shown as 412(a) using the dollar sign symbol “$”, with “$” indicating inexpensive, while “$$$$$” indicates expensive. The user may also select criteria to “Hide” 414, for example, to hide entities that the user has already evaluated 414(a) (e.g., “Placed I've Rated”), or chain restaurants 414(b) (e.g., “Big Chains”). When the user has completed selecting and augmenting the criteria, the user may select “Done” 402, to save the criteria. Upon selecting certain criteria, the entity search system may search in real-time as the criteria are being augmented, and shown in a textual display 416, preliminary results. For example, in the user display 400, the textual display 416 shows that no entities could be found with a “$” or “$$” price in the specified location, Berkeley.

FIGS. 5 and 6 show how the chosen parameters can differ based upon the query (City, vs. a specified range). FIG. 5 illustrates an exemplary user display 500 with search results for the primary user. The user may enter a search query in an input box 504, for example, “pizza” or “cheap eats”. In location box 506, the user may enter a location, for example, “Berkeley”. To augment other criteria for search, the user may select “Refine your search” 508 to display other criteria that the user may select and/or modify in the search. The user display 500 may show a set of entities, for example, “Jupiter's” in section 510, “Triple Rock Brewery & Alehouse” in 512, and “Bette's Oceanview Diner” in 514. Each section may display entity data, such as a name of the entity 510(a) “Jupiter's”, a type of food or cuisine 510(b) “Pizza”, a price range 510(c) “$$”, location data 510(d) “Berkeley—33.1 mi” (e.g., city and distance from current location), and evaluation data 510(g) “#2 Second most popular Pizza in Berkeley, 3382 Mentions” (e.g., rating, review, number of check-ins, etc.). Further, other navigation indicators may be displayed, such as an arrow 510(e), which would direct the user to a display with more detailed entity data regarding the specific entity, in this example, “Jupiter's”. There may also be other options 510(f), such as an informative display about a recommendation from a recommendation system, a product logo, an icon to add the entity to a favorites list, or an icon to ask for help. Entity “Triple Rock Brewery & Alehouse” in section 512 has similar options, indicators, and data, as in section 510 for “Jupiter's”. If the user wishes to view the results displayed in a different layout, the user may select 502 for a tiled format, or other layout.

FIG. 6 illustrates an exemplary user display 600 with search results for the primary user. The user may enter a search query in an input box 604, for example, “pizza” or “cheap eats”. To augment other criteria for search, the user may select “Refine your search” 608 to display other criteria that the user may select and/or modify in the search. In location box 606, the user may select “Near Me”, which would augment the search and display the search results differently from that shown in FIG. 5. The “Near Me” option would use the current location of the user device, determined using GPS or other systems. The user display 600 may show a new set of entities from those shown in FIG. 5, for example, “Hobee's Restaurant” in section 610, and “Lozano's Brushless Car . . .” in 612. Each section may display entity data, such as a name of the entity 610(a) “Hobee's Restaurant”, a type of food or cuisine 610(b) “American”, a price range 610(c) “$$”, location data 610(d) “Palo Alto—0.3 mi” (e.g., city and distance from current location), and evaluation data 610(g) “#3 Third most popular American in Palo Alto, 568 Mentions” (e.g., rating, review, number of check-ins, etc.). Further, other navigation indicators may be displayed, such as an arrow 610(e), which would direct the user to a display with more detailed entity data regarding the specific entity, in this example, “Hobee's Restaurant”. There may also be other options 610(f), such as an informative display about a recommendation from a recommendation system, a product logo, an icon to add the entity to a favorites list, or an icon to to ask for help. Entity “Lozano Brushless Car” in section 612 may have similar options, indicators, and data, as in section 610 for “Hobee's Restaurant”. If the user wishes to view the results displayed in a different layout, the user may select 602 for a tiled format, or other layout.

In another embodiment of the invention, the entity search system may apply a search relaxation, which occurs when a target user makes a query for a search, but the search is unsuccessful in finding sufficient entities matching the target user's query, so the query automatically becomes generalized, or altered in a pre-determined way. Search relaxation may happen in a way that is not exposed to the target user, or it could be explicitly explained to the target user why the search query and/or criteria have been relaxed, as shown in FIG. 7.

FIG. 7 illustrates an exemplary user display 700 with search results for the primary user. The user may enter a search query in an input box 704, for example, “noodle theory”. To augment other criteria for search, the user may select “Refine your search” 708 to display other criteria that the user may select and/or modify in the search. In location box 706, the user may select “Near Me”. If the user wishes to view the results displayed in a different layout, the user may select 702 for a tiled format, or other layout. The “Near Me” option would use the current location of the user device, determined using GPS or other systems. The user display 700 may show in a textual description 710, which no entities matching the search query (e.g., “noodle theory”) within the specified range (e.g., 0.3 miles). The entity search system may then make other recommendations matching the search query, but with relaxed range criteria. For example, “Noodle Theory” in 712. Again, each section may display entity data, such as a name of the entity 712(a) “Noodle Theory”, a type of food or cuisine 712(b) “Asian”, a price range 712(c) “$$”, and location data 712(d) “Oakland—31.4 mi” (e.g., city and distance from current location). Further, other navigation indicators may be displayed, such as an arrow 712(e), which would direct the user to a display with more detailed entity data regarding the specific entity, in this example, “Noodle Theory”. There may also be other options 712(f), such as an informative display about a recommendation from a recommendation system, a product logo, an icon to add the entity to a favorites list, or an icon to ask for help.

The description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the invention. Rather, the description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the invention. It is to be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the invention as set forth in the appended claims.

Specific details are given in the description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments may be practiced without these specific details. For example, systems may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known processes, structures and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.

Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations may be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.

Moreover, as disclosed herein, the term “storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data.

Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.

Further embodiments may be envisioned to one of ordinary skill in the art after reading this disclosure. In other embodiments, combinations or sub-combinations of the above disclosed invention may be advantageously made. The example arrangements of components are shown for purposes of illustration and it should be understood that combinations, additions, re-arrangements, and the like are contemplated in alternative embodiments of the present invention. Thus, while the invention has been described with respect to exemplary embodiments, one skilled in the art will recognize that numerous modifications are possible.

For example, the processes described herein may be implemented using hardware components, software components, and/or any combination thereof. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims and that the invention is intended to cover all modifications and equivalents within the scope of the following claims. 

1. A computer-implemented method for providing searches for entities to a primary user, the method comprising: Obtaining user data related to a plurality of users relevant to the primary user; storing the user data at the server computer; obtaining entity data from a plurality of data sources, wherein the entity data is associated with an entity in a plurality of entities storing the entity data, wherein the entity data associated with the plurality of entities is stored in an entity database; receiving a query for a search for relevant entities; searching for a set of relevant entities relevant to the primary user from the plurality of entities based on the query, entity data, and user data; determining a set of criteria for an initial order of relevance, wherein the initial order of relevance is an order in which the set of relevant entities are to be communicated to the primary user; determining the initial order of relevance of the set of relevant entities based on the set of criteria; communicating to the primary user, on a user device, the set of relevant entities in the initial order of relevance to the primary user; obtaining, via the user device, feedback data from the user related to the search for the set of relevant entities; augmenting the search for the set of relevant entities, thereby updating the set of relevant entities, based on the feedback data; and communicating, via the user device, the updated set of relevant entities to the primary user, thereby providing an augmented search for relevant entities to the primary user.
 2. The computer-implemented method of claim 1, further comprising: obtaining, via the user device, feedback data from the user related to the initial order of relevance for the set of relevant entities; augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities based on the feedback data; and communicating, via the user device, the set of relevant entities to the primary user based on the adjusted order of relevance.
 3. The computer-implemented method of claim 1, further comprising: assigning a corresponding weight of each criteria in the set of criteria; determining the initial order of relevance of the set of relevant entities based on the weight of each criteria in the set of criteria; obtaining, via the user device, feedback data from the user related to the corresponding weight of each criteria in the set of criteria; augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities, based on the feedback data related to the corresponding weight of each criteria in the set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the adjusted order of relevance.
 4. The computer-implemented method of claim 1, wherein the set of criteria includes one or more filters applied to entity data related to the plurality of entities.
 5. The computer-implemented method of claim 4, wherein the one or more filters are applied either alone or in combination based on a corresponding weight assigned to each filter.
 6. The computer-implemented method of claim 3, wherein one or more criteria in the set of criteria related to the query is implicitly determined, and is stored in a database.
 7. The computer-implemented method of claim 3, wherein one or more criteria in the set of criteria related to the query is determined in real-time, by the server computer, based on the query.
 8. The computer-implemented method of claim 7, wherein one or more criteria in the set of criteria related to the query is based on feedback data from the primary user.
 9. The computer-implemented method of claim 3, wherein the one or more criteria includes geographic location, distance radius around the geographic location, or current location data.
 10. The computer-implemented method of claim 9, wherein the current location data is obtained via the user device.
 11. The computer-implemented method of claim 3, wherein the one or more criteria includes one or more attributes of entity data related to the plurality of entities, wherein the attribute includes cuisine, price, type, or environment.
 12. The computer-implemented method of claim 1, wherein communicating the set of relevant entities may be numerical, textual, pictorial, auditory, tactile, either alone or in combination.
 13. The computer-implemented method of claim 1, wherein the query meets a search relaxation criterion, the method further comprises: ignoring one or more criteria in the set of criteria, thereby creating a reduced set of criteria; determining a set of relevant entities based on the reduced set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the reduced set of criteria.
 14. The computer-implemented method of claim 1, further comprising: determining an error in the query; correcting the error in the query, thereby creating a corrected set of criteria; determining a set of relevant entities based on the corrected set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the corrected set of criteria.
 15. The computer-implemented method of claim 3, further comprising: broadening one or more criteria in the set of criteria, thereby creating a broadened set of criteria; determining a set of relevant entities based on the broadened set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the broadened set of criteria.
 16. The computer-implemented method of claim 1, wherein the entity provides goods or services to the target user.
 17. The computer-implemented method of claim 13, wherein ignoring one or more criteria to create a reduce set of criteria is based on the corresponding weight of each criteria.
 18. The computer-implemented method of claim 13, wherein ignoring one or more criteria to create the reduced set of criteria is based on a previous user response to each criteria.
 19. A computer-implemented method for providing searches for entities to a primary user, the method comprising: receiving a query for a search for relevant entities; searching, at a server computer, for a set of relevant entities relevant to the primary user from the plurality of entities based on the query, entity data, and user data; receiving location data from the primary user; automatically determining a relevant distance from the location data of the primary user; determining a set of criteria for an initial order of relevance, wherein the initial order of relevance is an order in which the set of relevant entities are to be communicated to the primary user; determining the initial order of relevance of the set of relevant entities based on the set of criteria and the relevant distance; communicating to the primary user, on a user device, the set of relevant entities in the initial order of relevance to the primary user; obtaining, via the user device, feedback data from the user related to the search for the set of relevant entities; augmenting the search for the set of relevant entities, thereby updating the set of relevant entities, based on the feedback data; and communicating, via the user device, the updated set of relevant entities to the primary user, thereby providing an augmented search for relevant entities to the primary user.
 20. A server computer comprising a processor and a non-transitory computer readable medium, the non-transitory computer readable medium comprising code executable by the processor to implement a method for providing searches for entities to a primary user, the method comprising: obtaining, at the server computer, user data related to a plurality of users relevant to the primary user; storing the user data at the server computer; obtaining, at the server computer, entity data from a plurality of data sources, wherein the entity data is associated with an entity in a plurality of entities storing the entity data, wherein the entity data associated with the plurality of entities is stored in an entity database; receiving a query for a search for relevant entities; searching, at the server computer, for a set of relevant entities relevant to the primary user from the plurality of entities based on the query, entity data, and user data; determining a set of criteria for an initial order of relevance, wherein the initial order of relevance is an order in which the set of relevant entities are to be communicated to the primary user; determining the initial order of relevance of the set of relevant entities based on the set of criteria; communicating to the primary user, on a user device, the set of relevant entities in the initial order of relevance to the primary user; obtaining, via the user device, feedback data from the user related to the search for the set of relevant entities; augmenting the search for the set of relevant entities, thereby updating the set of relevant entities, based on the feedback data; and communicating, via the user device, the updated set of relevant entities to the primary user, thereby providing an augmented search for relevant entities to the primary user.
 21. The computer-implemented method of claim 20, further comprising: obtaining, via the user device, feedback data from the user related to the initial order of relevance for the set of relevant entities; augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities based on the feedback data; and communicating, via the user device, the set of relevant entities to the primary user based on the adjusted order of relevance.
 22. The computer-implemented method of claim 20, further comprising: assigning a corresponding weight of each criteria in the set of criteria; determining the initial order of relevance of the set of relevant entities based on the weight of each criteria in the set of criteria; obtaining, via the user device, feedback data from the user related to the corresponding weight of each criteria in the set of criteria; augmenting the initial order of relevance for the set of relevant entities, thereby creating an adjusted order of relevance for the set of relevant entities, based on the feedback data related to the corresponding weight of each criteria in the set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the adjusted order of relevance.
 23. The computer-implemented method of claim 20, wherein the set of criteria includes one or more filters applied to entity data related to the plurality of entities.
 24. The computer-implemented method of claim 23, wherein the one or more filters are applied either alone or in combination based on a corresponding weight assigned to each filter.
 25. The computer-implemented method of claim 22, wherein one or more criteria in the set of criteria related to the query is implicitly determined, and is stored in a database.
 26. The computer-implemented method of claim 22, wherein one or more criteria in the set of criteria related to the query is determined in real-time, by the server computer, based on the query.
 27. The computer-implemented method of claim 26, wherein one or more criteria in the set of criteria related to the query is based on feedback data from the primary user.
 28. The computer-implemented method of claim 22, wherein the one or more criteria includes geographic location, distance radius around the geographic location, or current location data.
 29. The computer-implemented method of claim 28, wherein the current location data is obtained via the user device.
 30. The computer-implemented method of claim 22, wherein the one or more criteria includes one or more attributes of entity data related to the plurality of entities, wherein the attribute includes cuisine, price, type, or environment.
 31. The computer-implemented method of claim 20, wherein communicating the set of relevant entities may be numerical, textual, pictorial, auditory, tactile, either alone or in combination.
 32. The computer-implemented method of claim 20, wherein the query meets a search relaxation criterion, the method further comprises: ignoring one or more criteria in the set of criteria, thereby creating a reduced set of criteria; determining a set of relevant entities based on the reduced set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the reduced set of criteria.
 33. The computer-implemented method of claim 20, further comprising: determining an error in the query; correcting the error in the query, thereby creating a corrected set of criteria; determining a set of relevant entities based on the corrected set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the corrected set of criteria.
 34. The computer-implemented method of claim 22, further comprising: broadening one or more criteria in the set of criteria, thereby creating a broadened set of criteria; determining a set of relevant entities based on the broadened set of criteria and the corresponding weight of each criteria in the reduced set of criteria; and communicating, via the user device, the set of relevant entities to the primary user based on the broadened set of criteria.
 35. The computer-implemented method of claim 20, wherein the entity provides goods or services to the target user.
 36. The computer-implemented method of claim 32, wherein ignoring one or more criteria to create a reduce set of criteria is based on the corresponding weight of each criteria.
 37. The computer-implemented method of claim 32, wherein ignoring one or more criteria to create the reduced set of criteria is based on a previous user response to each criteria.
 38. A computer-implemented method for providing searches for entities to a primary user, the method comprising: receiving a query for a search for relevant entities; searching, at a server computer, for a set of relevant entities relevant to the primary user from the plurality of entities based on the query, entity data, and user data; receiving location data from the primary user; automatically determining a relevant distance from the location data of the primary user; determining a set of criteria for an initial order of relevance, wherein the initial order of relevance is an order in which the set of relevant entities are to be communicated to the primary user; determining the initial order of relevance of the set of relevant entities based on the set of criteria and the relevant distance; communicating to the primary user, on a user device, the set of relevant entities in the initial order of relevance to the primary user; obtaining, via the user device, feedback data from the user related to the search for the set of relevant entities; augmenting the search for the set of relevant entities, thereby updating the set of relevant entities, based on the feedback data; and communicating, via the user device, the updated set of relevant entities to the primary user, thereby providing an augmented search for relevant entities to the primary user. 